package com.kazusa.myservlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;

/*
* 1.cookie只在当前浏览器中有效
* 2.cookie不能存中文
* 3.如果服务器端发送重复的Cookie那么会覆盖原有的Cookie。
* 4.cookie存储数量有限制，不同浏览器有不同限制。
* 5.cookie存储的大小4KB左右。
* */
@WebServlet("/cookieWarning")
public class CookieWarning extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*cookie存中文*/
        String name="姓名";
        String value="张三";

        //将中文通过URLEncoder编码
        name= URLEncoder.encode(name);
        value=URLEncoder.encode(value);
        //创建cookie对象
        Cookie cookie=new Cookie(name,value);
        //响应cookie
        response.addCookie(cookie);


        Cookie []cookies= request.getCookies();
        //通过获取Cookie时，通过URLDecoder进行解码
        if(cookies!=null&&cookies.length>0){
            for(Cookie c:cookies){
                System.out.println(URLDecoder.decode(c.getName()));
                System.out.println(URLDecoder.decode(c.getValue()));
            }
        }

        //将原来已有的cookie对象重新设置
        Cookie cookie1=new Cookie("name","zhangsan");
        response.addCookie(cookie1);
    }
}
